#!/usr/bin/env python3
"""
CodeBuddy 快速启动脚本
提供简化的启动选项和演示功能
"""

import sys
import os
from pathlib import Path

# 添加项目根目录到Python路径
project_root = Path(__file__).parent
sys.path.insert(0, str(project_root))

from rich.console import Console
from rich.panel import Panel
from rich.prompt import Prompt, Confirm
from rich.table import Table

console = Console()

def show_welcome():
    """显示欢迎界面"""
    welcome = Panel(
        """
🤖 [bold blue]CodeBuddy - 多智能体协同编程助手[/bold blue]
🚀 [cyan]基于智谱清言GLM-4-Flash的多AI代理协同编程系统[/cyan]

[green]✨ 功能特性：[/green]
• 🎯 智能需求分析        • 🏗️ 系统架构设计
• 💻 自动代码生成        • 🧪 单元测试生成  
• 🔍 代码质量审查        • 🔒 安全漏洞检测
• ⚡ 性能优化建议        • 📚 文档自动生成

[green]🤖 AI模型：[/green] GLM-4-Flash (智谱清言)
[yellow]选择您的启动方式：[/yellow]
        """,
        title="欢迎使用 CodeBuddy",
        border_style="blue"
    )
    console.print(welcome)

def check_environment():
    """检查环境配置"""
    console.print("🔧 检查环境配置...")
    
    # 检查.env文件
    env_file = project_root / ".env"
    if not env_file.exists():
        console.print("[yellow]⚠️  未找到 .env 文件[/yellow]")
        
        if Confirm.ask("是否创建配置文件？"):
            # 复制示例文件
            example_file = project_root / "env_example.txt"
            if example_file.exists():
                env_content = example_file.read_text()
                env_file.write_text(env_content)
                console.print("[green]✅ 已创建 .env 文件[/green]")
                console.print("[yellow]请编辑 .env 文件配置您的智谱清言 API Key[/yellow]")
                return False
            else:
                console.print("[red]❌ 未找到配置示例文件[/red]")
                return False
        else:
            return False
    
    # 检查API Key配置
    try:
        from config import validate_config
        validate_config()
        console.print("[green]✅ 配置验证通过[/green]")
        return True
    except Exception as e:
        console.print(f"[red]❌ 配置验证失败: {e}[/red]")
        console.print("[yellow]请检查 .env 文件中的 ZHIPU_API_KEY 配置[/yellow]")
        return False

def show_startup_options():
    """显示启动选项"""
    table = Table(title="🚀 启动选项")
    table.add_column("选项", style="cyan", no_wrap=True)
    table.add_column("描述", style="green")
    table.add_column("命令示例", style="yellow")
    
    table.add_row("1", "命令行模式 - 直接输入需求", "python main.py run")
    table.add_row("2", "交互式模式 - 逐步收集需求", "python main.py run --interactive")
    table.add_row("3", "Web界面模式 - 图形化界面", "python main.py web")
    table.add_row("4", "演示模式 - 预设示例", "python main.py demo")
    table.add_row("5", "从文件读取 - 使用示例文件", "python main.py run --input sample_input.txt")
    table.add_row("6", "测试API连接 - 验证智谱清言配置", "python test_zhipu_connection.py")
    table.add_row("7", "查看帮助 - 完整命令说明", "python main.py --help")
    
    console.print(table)

def run_option(choice: str):
    """执行选择的选项"""
    
    if choice == "1":
        # 命令行模式
        requirement = Prompt.ask("请输入您的需求描述")
        if requirement:
            os.system(f'python main.py run "{requirement}"')
    
    elif choice == "2":
        # 交互式模式
        os.system('python main.py run --interactive')
    
    elif choice == "3":
        # Web界面模式
        console.print("🌐 启动Web界面...")
        os.system('python main.py web')
    
    elif choice == "4":
        # 演示模式
        os.system('python main.py demo')
    
    elif choice == "5":
        # 从文件读取
        sample_file = project_root / "sample_input.txt"
        if sample_file.exists():
            console.print(f"📁 使用示例文件: {sample_file}")
            os.system(f'python main.py run --input "{sample_file}"')
        else:
            console.print("[red]❌ 未找到示例文件 sample_input.txt[/red]")
    
    elif choice == "6":
        # 测试API连接
        console.print("🔍 测试智谱清言API连接...")
        os.system('python test_zhipu_connection.py')
    
    elif choice == "7":
        # 查看帮助
        os.system('python main.py --help')
    
    else:
        console.print("[red]❌ 无效选择[/red]")

def quick_demo():
    """快速演示"""
    console.print("🎬 [bold blue]快速演示[/bold blue]")
    
    demo_requirement = "创建一个简单的命令行计算器，支持基本的四则运算"
    
    console.print(f"📝 演示需求: {demo_requirement}")
    
    if Confirm.ask("开始演示？"):
        console.print("🚀 启动CodeBuddy演示...")
        os.system(f'python main.py run "{demo_requirement}" --output ./demo_output')

def main():
    """主函数"""
    show_welcome()
    
    # 检查环境
    if not check_environment():
        console.print("\n[red]请先配置环境后再运行[/red]")
        return
    
    console.print()
    
    # 询问启动方式
    startup_choice = Prompt.ask(
        "选择启动方式",
        choices=["options", "demo", "quick", "exit"],
        default="options"
    )
    
    if startup_choice == "options":
        # 显示完整选项
        show_startup_options()
        choice = Prompt.ask(
            "\n请选择 (1-7)",
            choices=["1", "2", "3", "4", "5", "6", "7"],
            default="1"
        )
        run_option(choice)
    
    elif startup_choice == "demo":
        # 快速演示
        quick_demo()
    
    elif startup_choice == "quick":
        # 快速模式
        requirement = Prompt.ask("请简述您的需求")
        if requirement:
            console.print("🚀 启动快速模式...")
            os.system(f'python main.py run "{requirement}"')
    
    elif startup_choice == "exit":
        console.print("👋 再见！")
        return
    
    # 询问是否继续
    if Confirm.ask("\n是否继续其他操作？"):
        main()

if __name__ == "__main__":
    try:
        main()
    except KeyboardInterrupt:
        console.print("\n\n👋 再见！")
    except Exception as e:
        console.print(f"\n[red]❌ 运行错误: {e}[/red]")
        console.print("请检查环境配置或查看完整错误信息") 